package cz.util.wx;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import cz.dto.AccessToken;
import cz.dto.menu.Menu;
import cz.util.net.HttpUtil;
import org.apache.log4j.Logger;

/**
 * 微信工具类
 * @author 51452
 *
 */
public class WeixinUtil {
	
	private static Logger log =  Logger.getLogger("WeixinUtil");
	
	public final static String access_token_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET"; // 获取access_token的接口地址（GET） 限200（次/天）
	
	
	public static String menu_create_url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN";// 菜单创建（POST） 限100（次/天）   
	  
	
	/** 
	 * 获取access_token 
	 *  
	 * @param appid 凭证 
	 * @param appsecret 密钥 
	 * @return 
	 */  
	public static AccessToken getAccessToken(String appid, String appsecret) {
	    AccessToken accessToken = null;  
	  
	    String requestUrl = access_token_url.replace("APPID", appid).replace("APPSECRET", appsecret);  
	    JSONObject jsonObject = HttpUtil.httpsRequest(requestUrl, "GET", null);
	    // 如果请求成功  
	    if (null != jsonObject) {  
	        try {
	        	System.out.println(jsonObject);
	            accessToken = new AccessToken();  
	            accessToken.setToken(jsonObject.getString("access_token"));  
	            accessToken.setExpiresIn(jsonObject.getInteger("expires_in"));
	        } catch (JSONException e) {
	            accessToken = null;  
	            // 获取token失败  
	            log.error("获取token失败 ");
	            log.error("errcode:"+jsonObject.getInteger("errcode"));
	            log.error("errmsg:"+jsonObject.getString("errmsg"));
	        }  
	    }  
	    return accessToken;  
	} 
	
	
	/** 
	 * 创建菜单 
	 *  
	 * @param menu 菜单实例 
	 * @param accessToken 有效的access_token 
	 * @return 0表示成功，其他值表示失败 
	 */  
	public static int createMenu(Menu menu, String accessToken) {
		

		int result = 0;

		// 拼装创建菜单的url
		String url = menu_create_url.replace("ACCESS_TOKEN", accessToken);
		// 将菜单对象转换成json字符串
		String jsonMenu = JSONObject.toJSONString(menu).toString();
		// 调用接口创建菜单
		JSONObject jsonObject = HttpUtil.httpsRequest(url, "POST", jsonMenu);

		if (null != jsonObject) {
			if (0 != jsonObject.getInteger("errcode")) {
				result = jsonObject.getInteger("errcode");
				log.error("创建菜单失败");
				log.error("errcode:"+jsonObject.getInteger("errcode"));
				log.error("errmsg:"+jsonObject.getString("errmsg"));
			}
		}

		return result;
	}  

}
